home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / pxbud.zip / PDXFLD.H < prev    next >
C/C++ Source or Header  |  1991-05-17  |  6KB  |  193 lines

  1. /*┌───────────────────────────────────────────────────────────────────────┐
  2.   │                                                                       │
  3.   │   Module:  PDXFLD.H                                                   │
  4.   │   Author:  Rick Kligman                                               │
  5.   │   Purpose: Class definition for Paradox fields                        │
  6.   │                                                                       │
  7.   │   Last Modified: 05-17-91 00:34am                                     │
  8.   │                                                                       │
  9.   │   Copyright 1991 Rick Kligman                                         │
  10.   │   This code may be freely used and distributed in commercial apps     │
  11.   │   provided some mention of PXBuddy++ is made in the documentation.    │
  12.   │                                                                       │
  13.   │   Version 1.00                                                        │
  14.   └───────────────────────────────────────────────────────────────────────┘ */
  15.  
  16.  
  17. /*
  18.  *      future enhancements:
  19.  *
  20.  *          member function set should check
  21.  *            validity of number being set into field. That way
  22.  *            when you write field to record buffer, data is OK.
  23.  */
  24.  
  25. #ifndef RKPDXFLD_H
  26. #define RKPDXFLD_H
  27.  
  28. #ifndef   __STRING_H
  29.   #include <string.h>
  30. #endif
  31.  
  32. #ifndef   __STDLIB_H
  33.   #include <stdlib.h>
  34. #endif
  35.  
  36. #ifndef   PXENGINE_H
  37.   extern "C" {
  38.        #include <pxengine.h>
  39.   }
  40. #endif
  41.  
  42. #ifndef   RKNONVERR_H
  43.   #include "error.h"
  44. #endif
  45.  
  46. #define   CKERR   if (err) return (err)
  47.  
  48. extern    class pxtable;
  49.  
  50. //    ╓─────────────────────────────────────────────────────────────────╖
  51. //    ║                     Abstract class for Fields                   ║
  52. //    ╚═════════════════════════════════════════════════════════════════╝
  53.  
  54. class absfld {
  55. protected:
  56.  
  57.   FIELDHANDLE   fh;
  58.  
  59. public:
  60.  
  61.   absfld();
  62.   ~absfld();
  63.  
  64.   virtual int   isa()             { return (0); }
  65.   FIELDHANDLE   fhret()           { return ( fh ); }
  66.   virtual int   get()             { return (-1); }
  67.  
  68.   virtual int   put(int = FALSE)  { return (-1); }
  69.  
  70.   virtual int   setinfo(pxtable&, char *) { return (-1); }
  71.  
  72.   virtual int   search(char *, int = SEARCHFIRST)
  73.                         { return (-1); }
  74.  
  75.   virtual int   search(short,  int = SEARCHFIRST)
  76.                         { return (-1); }
  77.  
  78.   virtual int   search(double, int = SEARCHFIRST)
  79.                         { return (-1); }
  80.  
  81.   virtual int   search(long,   int = SEARCHFIRST)
  82.                         { return (-1); }
  83.  
  84.           int   search_fld(TABLEHANDLE, RECORDHANDLE, int, int);
  85. };
  86.  
  87. //    ╓───────────────────────────────────────────────────────────────────╖
  88. //    ║                     Field class for CHARS                         ║
  89. //    ╚═══════════════════════════════════════════════════════════════════╝
  90.  
  91. class CharFld : public absfld
  92. {
  93.   pxtable*  tblp;     // pointer to base table class
  94.   char      *data;
  95.   int       size;
  96.  
  97. public:
  98.  
  99.   CharFld ();
  100.   ~CharFld();
  101.  
  102.   int   isa()                     { return (1); }
  103.         operator char *()         { return data; }
  104.   void  operator = (char *);
  105.   int   get();
  106.   int   put(int = FALSE);
  107.   int   setinfo(pxtable&, char *);
  108.   int   search(char *srchvar, int mode = SEARCHFIRST);
  109. };
  110.  
  111. //    ╓───────────────────────────────────────────────────────────────────╖
  112. //    ║                     Field class for SHORTS                        ║
  113. //    ╚═══════════════════════════════════════════════════════════════════╝
  114.  
  115. class ShortFld : public absfld
  116. {
  117.   pxtable*  tblp;     // pointer to base table class
  118.   short   data;
  119.  
  120. public:
  121.  
  122.   ShortFld();
  123.   ~ShortFld();
  124.  
  125.   int   isa()                     { return (2); }
  126.         operator short()          { return data; }
  127.         operator short *()        { return &data; }
  128.         operator >(int comp)      { return data > comp; }
  129.         operator <(int comp)      { return data < comp; }
  130.   void  operator = (short newval) { data = newval; }
  131.   int   get();
  132.   int   put(int = FALSE);
  133.   int   setinfo(pxtable&, char *);
  134.   int   search(short srchvar, int mode = 1);
  135. };
  136.  
  137. //    ╓───────────────────────────────────────────────────────────────────╖
  138. //    ║                     Field class for DOUBLES                       ║
  139. //    ╚═══════════════════════════════════════════════════════════════════╝
  140.  
  141. class DblFld : public absfld
  142. {
  143.   pxtable*  tblp;     // pointer to base table class
  144.   double  data;
  145.  
  146. public:
  147.  
  148.   DblFld();
  149.   ~DblFld();
  150.  
  151.   int     isa()                      { return (3); }
  152.           operator double()          { return data; }
  153.           operator double *()        { return &data; }
  154.           operator >(double comp)    { return data > comp; }
  155.           operator <(double comp)    { return data < comp; }
  156.   void    operator = (double newval) { data = newval; }
  157.   int     get();
  158.   int     put(int = FALSE);
  159.   int     setinfo(pxtable&, char *);
  160.   int     search(double srchvar, int mode = SEARCHFIRST);
  161. };
  162.  
  163. //    ╓───────────────────────────────────────────────────────────────────╖
  164. //    ║                     Field class for DATES                         ║
  165. //    ╚═══════════════════════════════════════════════════════════════════╝
  166.  
  167. class DateFld : public absfld
  168. {
  169.   pxtable*  tblp;     // pointer to base table class
  170.   long      data;
  171.   char      datastr [11];
  172.  
  173. public:
  174.  
  175.   DateFld();
  176.   ~DateFld();
  177.  
  178.   int   isa()                     { return (4); }
  179.         operator char *()         { return datastr; }
  180.   int   operator = (char *);
  181.   int   get();
  182.   int   put(int = FALSE);
  183.   int   setinfo(pxtable&, char *);
  184.   // int   search(TABLEHANDLE, int, char *srchvar, int mode = SEARCHFIRST);
  185.   int   toint(int &mo, int &da, int &yr)
  186.             { return ( PXDateDecode(data, &mo, &da, &yr) ); }
  187.   int   frint(int mo, int da, int yr)
  188.             { return ( PXDateEncode(mo, da, yr, &data) ); }
  189. };
  190.  
  191.  
  192. #endif
  193.